#!/usr/bin/env python

 

import argparse
import sys


parser = argparse.ArgumentParser(
    description='''给定一个位置 提取出gff3上 出现在这个位子上的基因
    用法:
    fetch_gff3_from_point.py -p 1635804 -d -  -s chr1_ONT -g gene_predictions.gff3
    由大天才于2021年8月10日创建于浙江农业大学''')


parser.add_argument('-p',
                help='必须给定， 位置')

parser.add_argument('-s',
                help='必须给定， scaffold名称')

parser.add_argument('-d',
                help='方向')

parser.add_argument('-g',
                help='必须给定，gff3文件 ')





args = parser.parse_args()

if not args.p or not args.s or not args.g:
    parser.print_help()
    sys.exit()



point = int(args.p)

gff3file =args.g

target_scaf = args.s



if not args.d:
    d = ['+','-']
else:
    d = [i.strip() for i in str(args.d).split(',')]







first_exon_dic = {}




# 读取 denovo的结果  建立字典

scaf_gff_lista = []

one_gene_content = []

trigger = 0


with open(gff3file) as fila:
    
    for i in fila:

        k = i.strip().split('\t')

        if len(k)>=8:

            scaf = k[0]


            if scaf != target_scaf:

                continue


            if k[2] == 'gene':
                if k[6] in d and int(k[3])<=point and int(k[4])>=point:

                    print(i.strip())

                    trigger = 1
                else:

                    trigger = 0
            else:
                if trigger ==1:
                    print(i.strip())


